
// 投射节点表单验证
import _ from 'lodash'
import Vue from 'vue';
import {
    verificationTree,
} from "@/utils/index";
export function validate(data) {

    const newData = _.cloneDeep(data)
    console.log(newData, '提交的数据')
    const { left, right, joinType, on } = newData.queryInput
    const { form, treeItems, select, groupBy, attrChecked, having, checkedFilter, checkedLimit, limit, checkedOffset, offset, orderBy, orderCh, checkedOutputRateLimit, outputRateLimit, queryOutput } = newData
    if (!newData.queryName) {
        Vue.prototype.$msg('请输出名称')
        // Message('请输入名称')
        return false
    }
    if (!joinType) {
        Vue.prototype.$msg('加入类型不能为空')
        return false
    }
    if (!on) {
        Vue.prototype.$msg('条件不能为空')
        return false
    }
    // 流处理如果是选中的-做验证
    // if(from)
    // valiStr(left, 'left')
    // valiStr(right, 'right')
    // 注解验证
    if (form.checkedParallel && !form.parallel) {
        Vue.prototype.$msg('注解:平行组不能为空')
        return false
    }
    if (form.checkedImplement && !form.execGroup) {
        Vue.prototype.$msg('注解:执行组不能为空')
        return false
    }
    // 自定义注解校验
    const isKeyValue = verificationTree(treeItems);
    if (treeItems.length != 0 && isKeyValue.length !== 0) {
        let names = isKeyValue.map((item) => item.label);
        names = names.join(",");
        Vue.prototype.$msg("自定义注释[" + names + "]必须包含键值!")
        return false;
    }
    // 所有属性-用户自定义
    if (select.type === 'USER_DEFINED') {
        const isVal = select.value.some(item => {
            return item.expression == ''
        })
        if (isVal) {
            Vue.prototype.$msg("用户自定义属性不能为空")
            return false;
        }
    }
    // 按属性分组
    const isBy = groupBy.some(item => item == '')
    if (attrChecked && isBy) {
        Vue.prototype.$msg("按属性分组不能为空")
        return false;
    }
    // 按属性排序
    const isOrderBy = orderBy.some(item => item.value == '')
    if (orderCh && isOrderBy) {
        Vue.prototype.$msg("按属性排序不能为空")
        return false;
    }
    // 过滤分组
    if (checkedFilter && !having) {
        Vue.prototype.$msg("过滤分组不能为空");
        return false;
    }
    if (checkedLimit && limit == '') {
        Vue.prototype.$msg("限制不能为空");
        return false;
    }
    if (checkedOffset && offset == '') {
        Vue.prototype.$msg("位移不能为空");
        return false;
    }
    if (checkedOutputRateLimit && outputRateLimit == '') {
        Vue.prototype.$msg("输出速率不能为空");
        return false;
    }
    console.log(queryOutput)
    if (queryOutput.type !== 'DELETE' || queryOutput.type !== 'INSERT') {
        if (queryOutput.output.on == '') {
            Vue.prototype.$msg("正在进行中不能为空");
            return false;
        }
        if (queryOutput.output.checkedSet && queryOutput.output.set) {
            const isSetVal = queryOutput.output.set.some(item => {
                return item.attribute == '' || item.value == ''
            })
            if (isSetVal) {
                Vue.prototype.$msg("set不能有空值");
                return false;
            }

        }
    }
    return true
}
// function valiStr(obj, str) {
//     if (!obj.from) {
//         Vue.prototype.$msg('请完善【' + str + '】输出源')
//         throw new Error('请完善【' + str + '】输出源');
//     }
//     if (obj.streamHandlerChecked) {
//         const isVal = obj.streamHandlerList.every(item => {
//             if (_.isObject(item.value)) {
//                 const { parameters } = item.value
//                 const isPar = parameters.some(p => {
//                     return p == ''
//                 })
//                 return item.value.function !== '' && !isPar
//             } else {

//                 return item.value != ''
//             }
//         })
//         if (!isVal) {
//             Vue.prototype.$msg('请完善【' + str + '】流处理')
//             throw new Error('请完善【' + str + '】流处理');
//         }
//     } else {
//         return true
//     }
// }